//
//  HMTabBar.swift
//  Weibo
//
//  Created by xiongminghua on 16/7/18.
//  Copyright © 2016年 熊明华. All rights reserved.
//

import UIKit

/// 自定义tabBar
class HMTabBar: UITabBar {

    // 设置闭包属性
    var composeCallBack: (() -> Void)?
   
    // 懒加载按钮
    lazy var composeButton: UIButton = {
        
        let button = UIButton(type: UIButtonType.Custom)
        
        // 设置图片
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        
        // 设置背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        
        // 添加到父控件tabBar里面
         self.addSubview(button)
        
        // 添加点击事件
        button.addTarget(self, action: "composeClick", forControlEvents: UIControlEvents.TouchUpInside)
        
        return button
        
    }()
    
    
    // 按钮数量
    let itemCount = 5
    
    // 在系统创建对象的时候，会自动调用这个方法，而且是两次
    override func layoutSubviews() {
        // 一定要调用父类的方法
        super.layoutSubviews()
        
        // 每个按钮的宽度
        let newItemWidth = self.frame.width /  CGFloat(itemCount)
        
        var index = 0
        // 遍历按钮
        for item in self.subviews {
            
           // 将字符串转换成类名
          //  let cls = NSClassFromString("UITabBarButton")
            
            if item.isKindOfClass(NSClassFromString("UITabBarButton")!) {
                
                // 重新设置frame
                item.frame = CGRectMake(CGFloat(index) * newItemWidth, 0, newItemWidth, self.frame.height)
                
                index++
                
                // 将后面个按钮往后移动一位
                if index == 2 {
                    index++
                }
            }
            
        }
        
        // 设置中间的加号按钮 的frame
        composeButton.frame = CGRectMake(2 * newItemWidth, 0, newItemWidth, self.frame.height)
        
        
    }
    
    
    // MARK: - 按钮的点击事件
    func composeClick() {
        
       // 因为需要跳转到其他控制器，所以这里需要通过闭包传递到控制器处理
        // 调用闭包
        self.composeCallBack?()
        
    }
    
    
}
